package com.tedu.api.io;

import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

/**
 * listFiles()    返回值：数组----File[]   直接遍历文件、文件夹
 * 遍历文件夹或者文件同时，过滤遍历出来的文件、文件夹
 * 需求：获取“API”项目下，名字开头以 s 名称
 * listFiles(Files接口)    返回值：数组----File[]
 * Files过滤器接口：过滤遍历出来的文件、文件夹
 */
/*public class FilterAPI {
    public static void main(String[] args) throws IOException {
        //获取“API”项目下:File构造器传入"."
        File file=new File("."+File.separator+"API");
//④创建过滤器实现类
        MyFilter myFilter=new MyFilter();
        //获取API项目下的所有文件夹  并且必须是以 s 开头
        File[] subs=file.listFiles();//传入过滤器接口对象①自己实现类：MyFilter
        //⑤遍历数组
        for (int i=0; i<subs.length; i++) {//5.1  i获取数组下标
            //5.2数组名[下标]
            System.out.println("过滤后文件夹：" + subs[i].getName());
        }
    }
}
//①自己实现类 MyFilter  实现FileFilter接口：重写所有方法
class MyFilter implements FileFilter{
//②accept方法：获取到File的信息，【逻辑判断】条件满足：返回值：true
    public boolean accept(File pathname) {
        //③逻辑：判断获取的文件夹名字是"s"开头
        //3.1获取到过滤器传给我们pathname【File】的名称
        String name=pathname.getName();
        //3.2打印获取到的【File】的名称
        System.out.println("获取名称是："+name);
        //3.3判断名称是以”s“开头 文件夹
        // String字符串提供方法：返回值Boolean  startWith("s")获取字符串首字符   返回：true
        return name.startsWith("s");
    }
}*/

/**
 * 需求：获取API 项目下
  */

public class FilterAPI {
    public static void main(String[] args) throws IOException {
        File file=new File("."+File.separator+"API");
        //MyFilter myFilter=new MyFilter();子实现类换为匿名内部类
     /*   FileFilter my=new FileFilter() {
            public boolean accept(File pathname) {
                String name=pathname.getName();
                System.out.println("过滤出来文件夹名称是："+name);
                return pathname.getName().startsWith("s");
            }
        };*/
        File[] subs=file.listFiles(pathname->{return pathname.getName().startsWith("s");});
        for (int i=0; i<subs.length; i++) {
            System.out.println("过滤后文件夹：" + subs[i].getName());
        }
 //增强for 循环---改行2行
 for(File f:new File("."+File.separator+"API").listFiles(pathname -> {return pathname.getName().startsWith("s");})){
        }
    }
}
